import TestWorker from './worker/testWorker.js?worker'
const data = {
  name: 'zhangsan',
}
const worker = new TestWorker()
worker.onmessage = (msg) => {
  console.log('work msg', msg.data)
  console.log(data === msg.data)
}
worker.onerror = (err) => {
  console.log('work err', err)
}
worker.postMessage(data)

// 在主页面与 worker 之间传递的数据是通过拷贝，而不是共享来完成的(JSON序列化)。
// 传递给 worker 的对象需要经过序列化，接下来在另一端还需要反序列化。
// 页面与 worker 不会共享同一个实例，最终的结果就是在每次通信结束时生成了数据的一个副本。
// 大部分浏览器使用结构化克隆来实现该特性。

// 通过转让所有权（可转移对象）来传递数据
// 现代浏览器包含另一种性能更高的方法来将特定类型的对象传递给一个 worker 或从 worker 传回。
// 可转移对象从一个上下文转移到另一个上下文而不会经过任何拷贝操作。这意味着当传递大型数据集时会获得极大的性能提升。
// https://developer.mozilla.org/zh-CN/docs/Web/API/Web_Workers_API/Transferable_objects
